﻿using System.Collections.Generic;
using Sinacor.Infra.UI.Common;
using Sinacor.UI.Bovespa.Contabil.Communication.Bovespa.Contabil.EventoContabil;

namespace Sinacor.UI.Bovespa.Contabil.Communication.Translator.ModelToDataContract
{
    /// <summary>
    /// Communication.Translator.ModelToDataContract Class - EventoContabil
    /// </summary>
    public class EventoContabil
    {
        #region Métodos Públicos

        /// <summary>
        /// Traduz uma model do tipo Model.EventoContabil para um contrato de dados do tipo EventoContabilRequest
        /// </summary>
        /// <param name="model">Model.EventoContabil</param>
        /// <returns>EventoContabilRequest</returns>
        public EventoContabilRequest ToEventoContabilRequest(Model.EventoContabil model)
        {
            EventoContabilRequest eventoContabilRequest = new EventoContabilRequest();

            eventoContabilRequest.Codigo = model.Codigo.Value;
            eventoContabilRequest.Descricao = model.Descricao;
            eventoContabilRequest.UtilizaMunicipio = model.UtilizaMunicipio;

            return eventoContabilRequest;
        }

        /// <summary>
        /// Traduz uma coleção de models do tipo Model.EventoContabil para uma lista de contrato de dados 
        /// do tipo EventoContabilRequest
        /// </summary>
        /// <param name="modelList">Coleção de models do tipo Model.EventoContabil</param>
        /// <returns>Lista de contrato de dados do tipo EventoContabilRequest</returns>
        public List<EventoContabilRequest> ToEventoContabilRequest(ModelCollection<Model.EventoContabil> modelList)
        {
            List<EventoContabilRequest> eventoContabilRequestList = new List<EventoContabilRequest>();

            foreach (Model.EventoContabil model in modelList)
                eventoContabilRequestList.Add(this.ToEventoContabilRequest(model));

            return eventoContabilRequestList;
        }

        /// <summary>
        /// Traduz uma model do tipo Model.Parameter.FiltroEventoContabilChave para um contrato de dados 
        /// do tipo FiltroEventoContabilChave
        /// </summary>
        /// <param name="parameter">Model.Parameter.FiltroEventoContabilChave</param>
        /// <returns>FiltroEventoContabilChave</returns>
        public FiltroEventoContabilChave ToFiltroEventoContabilChaveRequest(Model.Parameter.FiltroEventoContabilChave parameter)
        {
            FiltroEventoContabilChave filtroEventoContabilChave = new FiltroEventoContabilChave();
            filtroEventoContabilChave.Codigo = parameter.Codigo;
            return filtroEventoContabilChave;
        }

        /// <summary>
        /// Traduz uma coleção de models do tipo Model.Parameter.FiltroEventoContabilChave para uma lista de contrato de dados 
        /// do tipo FiltroEventoContabilChave
        /// </summary>
        /// <param name="parameterList">Coleção de models do tipo Model.Parameter.FiltroEventoContabilChave</param>
        /// <returns>Lista de contrato de dados do tipo FiltroEventoContabilChave</returns>
        public List<FiltroEventoContabilChave> ToFiltroEventoContabilChaveRequest(ModelCollection<Model.Parameter.FiltroEventoContabilChave> parameterList)
        {
            List<FiltroEventoContabilChave> filtroEventoContabilChaveList = new List<FiltroEventoContabilChave>();

            foreach (Model.Parameter.FiltroEventoContabilChave parameter in parameterList)
                filtroEventoContabilChaveList.Add(this.ToFiltroEventoContabilChaveRequest(parameter));

            return filtroEventoContabilChaveList;
        }

        /// <summary>
        /// Traduz uma model do tipo Model.Parameter.FiltroEventoContabil para um contrato de dados do tipo FiltroEventoContabilRequest
        /// </summary>
        /// <param name="parameter">Model.Parameter.FiltroEventoContabil</param>
        /// <returns>FiltroEventoContabilRequest</returns>
        public FiltroEventoContabilRequest ToFiltroEventoContabilRequest(Model.Parameter.FiltroEventoContabil parameter)
        {
            FiltroEventoContabilRequest filtroEventoContabilRequest = new FiltroEventoContabilRequest();
            filtroEventoContabilRequest.Codigo = parameter.Codigo;
            filtroEventoContabilRequest.Descricao = parameter.Descricao;
            filtroEventoContabilRequest.UtilizaMunicipio = parameter.UtilizaMunicipio;
            return filtroEventoContabilRequest;
        }

        /// <summary>
        /// Traduz uma coleção de models do tipo Model.Parameter.FiltroEventoContabil para uma lista de contrato de dados 
        /// do tipo FiltroEventoContabilRequest
        /// </summary>
        /// <param name="parameterList">Coleção de models do tipo Model.Parameter.FiltroEventoContabil</param>
        /// <returns>Lista de contrato de dados do tipo FiltroEventoContabilRequest</returns>
        public List<FiltroEventoContabilRequest> ToFiltroEventoContabilRequest(ModelCollection<Model.Parameter.FiltroEventoContabil> parameterList)
        {
            List<FiltroEventoContabilRequest> filtroEventoContabilList = new List<FiltroEventoContabilRequest>();

            foreach (Model.Parameter.FiltroEventoContabil parameter in parameterList)
                filtroEventoContabilList.Add(this.ToFiltroEventoContabilRequest(parameter));

            return filtroEventoContabilList;
        }

        #endregion
    }
}
